﻿using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;

namespace Back_end.Results
{
	public class ChallengeResult : IHttpActionResult
	{
		public ChallengeResult(string loginProvider, ApiController controller)
		{
			LoginProvider = loginProvider;
			Request = controller.Request;
		}

		public string LoginProvider
		{ get; set; }
		public HttpRequestMessage Request
		{ get; set; }

		public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
		{
			Request.GetOwinContext().Authentication.Challenge(LoginProvider);

			HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
			response.RequestMessage = Request;
			return Task.FromResult(response);
		}
	}
}